libxl: fix cold plugged PCI devices with stubdomains
authorIan Campbell <ian.campbell@citrix.com>
Fri, 9 Dec 2011 12:01:16 +0000 (12:01 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Fri, 9 Dec 2011 12:01:16 +0000 (12:01 +0000)
Since 23565:72eafe80ebc1 the xenstore entries for the stubdomain's PCI were
never created and therefore the stubdom ends up waiting forever for the devices
which it has been asked to insert to show up.

Since the stubdomain is already running when we call the libxl_device_pci_add
loop in do_domain_create we should treat it as if "starting == 0".

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
tools/libxl/libxl_pci.c

index 120c2397c18e39bf9fc6e38e93ae31a5ee4d5e6b..8b2a1c5b770ef8d52d6824a21a19d396fa5899d5 100644 (file)
@@ -814,7 +814,8 @@ int libxl__device_pci_add(libxl__gc *gc, uint32_t domid, libxl_device_pci *pcide
     stubdomid = libxl_get_stubdom_id(ctx, domid);
     if (stubdomid != 0) {
         libxl_device_pci pcidev_s = *pcidev;
-        rc = do_pci_add(gc, stubdomid, &pcidev_s, starting);
+        /* stubdomain is always running by now, even at create time */
+        rc = do_pci_add(gc, stubdomid, &pcidev_s, 0);
         if ( rc )
             goto out;
     }